//
// Created by Tan Ke on 2023/12/4.
//

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


struct Item {
    char* s;
    int len;
};

struct Item* initItemList()
{
    struct Item* itemList = (struct Item*)malloc(sizeof(struct Item));
    int len = strlen(digits);
    int arraySize = 0;

    itemList[0].s = NULL;
    itemList[0].len = 0;
    itemList[1].s = NULL;
    itemList[1].len = 0;
    itemList[2].s = (char*)malloc(sizeof(char) * 3);
    itemList[2].s[0] = 'a';
    itemList[2].s[1] = 'b';
    itemList[2].s[2] = 'c';
    itemList[2].len = 3;
    itemList[3].s = (char*)malloc(sizeof(char) * 3);
    itemList[3].s[0] = 'd';
    itemList[3].s[1] = 'e';
    itemList[3].s[2] = 'f';
    itemList[3].len = 3;
    itemList[4].s = (char*)malloc(sizeof(char) * 3);
    itemList[4].s[0] = 'g';
    itemList[4].s[1] = 'h';
    itemList[4].s[2] = 'i';
    itemList[4].len = 4;
    itemList[5].s = (char*)malloc(sizeof(char) * 3);
    itemList[5].s[0] = 'j';
    itemList[5].s[1] = 'k';
    itemList[5].s[2] = 'l';
    itemList[5].len = 3;
    itemList[6].s = (char*)malloc(sizeof(char) * 3);
    itemList[6].s[0] = 'm';
    itemList[6].s[1] = 'n';
    itemList[6].s[2] = 'o';
    itemList[6].len = 3;
    itemList[7].s = (char*)malloc(sizeof(char) * 4);
    itemList[7].s[0] = 'p';
    itemList[7].s[1] = 'q';
    itemList[7].s[2] = 'r';
    itemList[7].s[3] = 's';
    itemList[7].len = 4;
    itemList[8].s = (char*)malloc(sizeof(char) * 3);
    itemList[8].s[0] = 't';
    itemList[8].s[1] = 'u';
    itemList[8].s[2] = 'v';
    itemList[8].len = 3;
    itemList[9].s = (char*)malloc(sizeof(char) * 4);
    itemList[9].s[0] = 'w';
    itemList[9].s[1] = 'x';
    itemList[9].s[2] = 'y';
    itemList[9].s[3] = 'z';
    itemList[9].len = 4;

    return itemList;
}

char** letterCombinations(char* digits, int* returnSize)
{
    struct Item* itemList = initItemList();
    int len = strlen(digits);
    int arraySize = 0;
    int sizeLen = 0;

    for (int i = 0; i < len; i ++) {
        if (i == 0 || i == 1) {
            continue;
        }
        if (arraySize == 0) {
            arraySize = itemList[i].len;
            sizeLen += 1;
        } else {
            arraySize *= itemList[i].len;
            sizeLen += 1;
        }
    }

    *returnSize = arraySize;
    if (sizeLen == 0) {
        return NULL;
    }

    char **ret = (char **)malloc(sizeof(char*) * arraySize);
    for (int i = 0; i < arraySize; i ++) {
        ret[i] = (char *)malloc(sizeof(char) * sizeLen);
    }

    for (int i = 0; i < len; i ++) {

    }
}

int main(void)
{
    return 0;
}
